package com.zkthink.ceres.applet.authority.controller;

/**
 * Created by kellen on 2020/5/3.
 */

//@Slf4j
//@Validated
//@RestController
//@RequestMapping("/applet/auth")
//@Api(value = "auth", tags = "鉴权服务")
public class AppletAuthController {

//    @Resource
//    private AppletAuthService authService;
//
//    @Autowired
//    private CacheRepository cacheRepository;
//
//    @Autowired
//    private AppletMemberService appletMemberService;
//
//    // @Value("${spring.profiles.active:prod}")
//    protected String profiles="prod";
//
//    @Autowired
//    private SmsTaskService smsTaskService;
//
//
//    /**
//     * 小程序登录
//     */
//    @PostMapping("/login")
//    @ApiOperation(value = "手机号密码登录", notes = "手机号密码登录")
//    public R<AuthInfo> login(@RequestBody @Validated CommonAppletLoginDTO appLoginDTO) {
//        if (appLoginDTO == null) {
//            return R.fail("账号或者密码错误");
//        }
//        if (StringUtils.isBlank(appLoginDTO.getPassWord())) {
//            return R.fail("密码未输入");
//        }
//        return authService.login(appLoginDTO);
//    }
//
//    /**
//     * 注册
//     */
//    @PostMapping("/register")
//    @ApiOperation(value = "注册", notes = "用户名密码注册")
//    public R register(@RequestBody RegDTO regDTO) {
//        log.info("注册信息:{}", regDTO);
//
//
//        /**
//         * 本机号码不需要验证码,输入的号码需要验证码
//         */
//        if (regDTO.getIsValidate()) {
//            //短信验证码校验
//            String key = CacheKey
//                    .buildKey(CacheKey.REGISTER_USER, TemplateCodeType.CODE_REGISTER_USER.name(),
//                            regDTO.getAccount());
//            String code = cacheRepository.get(key);
//            if (StrUtil.isBlank(code) || !code.equals(regDTO.getCode())) {
//                return R.fail(code, "验证码错误");
//            }
//        }
//
//        return authService.register(regDTO);
//    }
//
//    @PostMapping("/register/verify")
//    @LoginMode(strict = false)
//    @ApiOperation(value = "验证码发送", notes = "验证码发送")
//    public R verify(@Validated @RequestBody VerifyDTO param) {
//
//
//        if (!ValidatorUtil.checkPhone(param.getPhone())) {
//            return R.fail("请填写正确格式手机号");
//        }
//
//        //判断手机号是否注册
//        AppletMember member = appletMemberService.findByAccount(param.getPhone());
//        if (null != member) {
//            return R.validFail("手机号码已注册");
//        }
//        String code = "123456";
//        //判断是否是开发环境，开发环境不实际发送验证码
//        if (StrUtil.isNotBlank(profiles) && !"dev".equals(profiles)) {
//            code = RandomUtil.randomNumbers(6);
//            sendSmsUtil(code,param.getPhone(),"1433354");
//        }
//        //缓存验证码
//        String key = CacheKey
//                .buildKey(CacheKey.REGISTER_USER, TemplateCodeType.CODE_REGISTER_USER.name(),
//                        param.getPhone());
//        cacheRepository.setExpire(key, code, CacheRepository.DEF_TIMEOUT_5M);
//        return R.success();
//    }
//
//    @PostMapping("/login/verify")
//    @LoginMode(strict = false)
//    @ApiOperation(value = "登录发送验证码", notes = "登录发送验证码")
//    public R loginVerify(@Validated @RequestBody VerifyDTO param) {
//
//        if (!ValidatorUtil.checkPhone(param.getPhone())) {
//            return R.fail("请填写正确格式手机号");
//        }
//        //判断手机号是否注册
//        AppletMember member = appletMemberService.findByAccount(param.getPhone());
//        if (member == null) {
//            return R.validFail("手机号码未注册");
//        }
//        String code = "123456";
//        //判断是否是开发环境，开发环境不实际发送验证码
//        if (StrUtil.isNotBlank(profiles) && !"dev".equals(profiles)) {
//            code = RandomUtil.randomNumbers(6);
//            //创建短信任务
//            SmsTask smsTask = SmsTask.builder().build();
//            smsTask.setSourceType(SourceType.SERVICE);
//            smsTask.setTemplateParams(buildTemplateParam(code));
//            smsTask.setReceiver(param.getPhone());
//            smsTask.setDraft(false);
//            //验证码短信 默认为通用类型
//            smsTaskService.saveTask(smsTask, TemplateCodeType.CODE_LOGIN_USER);
//        }
//
//
//        //缓存验证码
//        String key = CacheKey
//                .buildKey(CacheKey.LOGIN_USER, TemplateCodeType.CODE_LOGIN_USER.name(),
//                        param.getPhone());
//        cacheRepository.setExpire(key, code, CacheRepository.DEF_TIMEOUT_5M);
//        return R.success();
//    }
//
//
//    @PostMapping("/updatePassword/verify")
//    @LoginMode(strict = false)
//    @ApiOperation(value = "修改密码发送验证码", notes = "修改密码发送验证码")
//    public R updatePasswordVerify(@Validated @RequestBody VerifyDTO param) {
//
//        if (!ValidatorUtil.checkPhone(param.getPhone())) {
//            return R.fail("请填写正确格式手机号");
//        }
//        //判断手机号是否注册
//        AppletMember member = appletMemberService.findByAccount(param.getPhone());
//        if (member == null) {
//            return R.validFail("手机号码未注册");
//        }
//        String code = "123456";
//        //判断是否是开发环境，开发环境不实际发送验证码
//        if (StrUtil.isNotBlank(profiles) && !"dev".equals(profiles)) {
//            code = RandomUtil.randomNumbers(6);
//            //创建短信任务
//            sendSmsUtil(code,param.getPhone(),"1433383");
//        }
//        //缓存验证码
//        String key = CacheKey
//                .buildKey(CacheKey.CODE_UPDATE_PASSWORD, TemplateCodeType.CODE_UPDATE_PASSWORD.name(),
//                        param.getPhone());
//        cacheRepository.setExpire(key, code, CacheRepository.DEF_TIMEOUT_5M);
//        return R.success();
//    }
//
//    @PostMapping("/updatePassword")
//    @ApiOperation(value = "修改密码", notes = "修改密码")
//    public R update(@RequestBody CommonAppletLoginDTO commonAppLoginDTO) {
//        if (commonAppLoginDTO == null) {
//            return R.fail("账号或者密码错误");
//        }
//        if (StringUtils.isBlank(commonAppLoginDTO.getPassWord()) || StringUtils.isBlank(commonAppLoginDTO.getCode())) {
//            return R.fail("密码或者验证码未输入");
//        }
//
//
//        log.info("用户名修改密码入参信息:{}", commonAppLoginDTO);
//        //短信验证码校验
//        String key = CacheKey
//                .buildKey(CacheKey.CODE_UPDATE_PASSWORD, TemplateCodeType.CODE_UPDATE_PASSWORD.name(),
//                        commonAppLoginDTO.getAccount());
//        String code = cacheRepository.get(key);
//        if (StrUtil.isBlank(code) || !code.equals(commonAppLoginDTO.getCode())) {
//            return R.validFail("验证码错误");
//        }
//
//
//        return authService.update(commonAppLoginDTO);
//    }
//
//    private String buildTemplateParam(String code) {
//        JSONObject param = new JSONObject();
//        param.put("code", code);
//        return param.toString();
//    }
//    
//    private String sendSmsUtil(String code,String phone,String templateID) {
//
//        try {
//            // 实例化一个认证对象，入参需要传入腾讯云账户secretId，secretKey,此处还需注意密钥对的保密
//            // 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
//            Credential credential = new Credential("AKIDsdnkcVGsIWXLyOhmeHfIgpj9LI1Vkljf", "98tQimbBWpyuiLl03tW2OWQ5ZrvkLBmD");
//            //创建http连接
//            HttpProfile httpProfile = new HttpProfile();
//            httpProfile.setReqMethod("POST");
//            httpProfile.setConnTimeout(60);
//            httpProfile.setEndpoint("sms.tencentcloudapi.com");
//
//            //实例化客户端对象
//            ClientProfile clientProfile = new ClientProfile();
//            clientProfile.setSignMethod("HmacSHA256");
//            clientProfile.setHttpProfile(httpProfile);
//            SmsClient client = new SmsClient(credential, "ap-guangzhou", clientProfile);
//
//            //实例化一个请求对象，根据调用的接口和实际情况，可以进一步设置请求参数
//            SendSmsRequest req = new SendSmsRequest();
//
//            /* 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId，示例如1400006666 */
//            // 应用 ID 可前往 [短信控制台](https://console.cloud.tencent.com/smsv2/app-manage) 查看
//
//            req.setSmsSdkAppid("1400689150");
//
//            /* 短信签名内容: 使用 UTF-8 编码，必须填写已审核通过的签名 */
//            // 签名信息可前往 [国内短信](https://console.cloud.tencent.com/smsv2/csms-sign) 或 [国际/港澳台短信](https://console.cloud.tencent.com/smsv2/isms-sign) 的签名管理查看
//            req.setSign("铜仁市车龙惠汽车维修保养");
//            /* 模板 ID: 必须填写已审核通过的模板 ID */
//            // 模板 ID 可前往 [国内短信](https://console.cloud.tencent.com/smsv2/csms-template) 或 [国际/港澳台短信](https://console.cloud.tencent.com/smsv2/isms-template) 的正文模板管理查看
//            req.setTemplateID(templateID);
//
//            /* 模板参数: 模板参数的个数需要与 TemplateId 对应模板的变量个数保持一致，若无模板参数，则设置为空 */
//            String[] templateParamSet = {code};
//            req.setTemplateParamSet(templateParamSet);
//
//            /* 下发手机号码，采用 E.164 标准，+[国家或地区码][手机号]
//             * 示例如：+8613711112222， 其中前面有一个+号 ，86为国家码，13711112222为手机号，最多不要超过200个手机号 */
//            String[] phoneNumberSet = {"+86"+phone};
//            req.setPhoneNumberSet(phoneNumberSet);
//
//            /* 用户的 session 内容（无需要可忽略）: 可以携带用户侧 ID 等上下文信息，server 会原样返回 */
//            String sessionContext = "";
//            req.setSessionContext(sessionContext);
//
//            /* 短信码号扩展号（无需要可忽略）: 默认未开通，如需开通请联系 [腾讯云短信小助手] */
//            String extendCode = "";
//            req.setExtendCode(extendCode);
//
//            /* 国际/港澳台短信 SenderId（无需要可忽略）: 国内短信填空，默认未开通，如需开通请联系 [腾讯云短信小助手] */
//            String senderid = "";
//            req.setSenderId(senderid);
//
//
//            /* 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
//             * 返回的 res 是一个 SendSmsResponse 类的实例，与请求对象对应 */
//            SendSmsResponse res = client.SendSms(req);
//
//            // 输出json格式的字符串回包
//            System.out.println(SendSmsResponse.toJsonString(res)+"验证码：=="+code);
//        } catch (TencentCloudSDKException e) {
//            e.printStackTrace();
//        }
//        return code;
//    }
}
